DAX (Data Analysis Expressions) হল একটি এক্সপ্রেশন ভাষা যা Power BI, PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয় ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরি করতে। Relationships ব্যবহার করে table join করা DAX-এ খুবই গুরুত্বপূর্ণ, কারণ এটি বিভিন্ন টেবিলের মধ্যে সম্পর্ক স্থাপন করে ডেটাকে একত্রিত করতে সহায়তা করে।
এই প্রবন্ধে আমরা আলোচনা করব কিভাবে DAX ব্যবহার করে বিভিন্ন টেবিলের মধ্যে Relationships তৈরি করা হয় এবং কীভাবে আপনি table join করতে পারেন।
১. DAX Relationships এবং Table Join এর মৌলিক ধারণা
Relationships হল দুটি বা তার বেশি টেবিলের মধ্যে সংযোগ, যা সাধারণত একটি Primary Key এবং একটি Foreign Key কলামের মাধ্যমে তৈরি করা হয়। Power BI-এ, আপনি যখন দুটি টেবিলের মধ্যে সম্পর্ক তৈরি করেন, তখন table join এর মতো কাজ হয়, যেখানে একটি টেবিলের তথ্য অন্য টেবিলের তথ্যের সাথে সম্পর্কিত হতে পারে।
DAX ব্যবহার করে সম্পর্ক তৈরি করার জন্য সাধারণত RELATED, RELATEDTABLE, এবং USERELATIONSHIP ফাংশনগুলি ব্যবহৃত হয়।
Types of Relationships in DAX:
- One-to-Many (1:*): এক টেবিলের একক রেকর্ড অন্য টেবিলের একাধিক রেকর্ডের সাথে সম্পর্কিত থাকে।
- Many-to-One (*:1): একাধিক রেকর্ড একটি নির্দিষ্ট রেকর্ডের সাথে সম্পর্কিত থাকে।
- Many-to-Many (:): দুটি টেবিলের মধ্যে একাধিক রেকর্ডের সম্পর্ক থাকতে পারে।
২. DAX Relationships তৈরি করার প্রক্রিয়া
Power BI তে Relationships তৈরি করার জন্য Model View ব্যবহার করা হয়। আপনি যখন টেবিলের মধ্যে সম্পর্ক তৈরি করেন, তখন সেটি DAX Queries বা কাস্টম ক্যালকুলেশন তৈরির জন্য ডেটার একটি সুষম সমন্বয় তৈরি করে।
Steps to Create Relationships:
- Power BI Model View-এ যান:
- Power BI-তে Model View এ চলে যান যেখানে টেবিলগুলির মধ্যে সম্পর্কগুলি প্রদর্শিত হয়।
- টেবিল নির্বাচন করুন:
- দুটি টেবিল নির্বাচন করুন, যেগুলির মধ্যে আপনি সম্পর্ক তৈরি করতে চান।
- Drill and Drop:
- একটি টেবিল থেকে সম্পর্কিত কলামটি অন্য টেবিলের সাথে drag and drop করুন।
- Cardinality নির্বাচন করুন:
- সম্পর্কের ধরন নির্বাচন করুন (যেমন One-to-Many বা Many-to-One) এবং Cardinality ঠিক করুন।
- Cross-filter Direction নির্ধারণ করুন:
- Cross-filter direction নির্বাচিত সম্পর্কের জন্য সেট করুন, যাতে সম্পর্কিত টেবিলগুলির মধ্যে সঠিকভাবে ফিল্টার প্রভাব কাজ করে।
৩. DAX Functions for Table Joins
DAX-এ সম্পর্কিত টেবিলগুলির মধ্যে join তৈরি করার জন্য প্রধানত RELATED, RELATEDTABLE, এবং USERELATIONSHIP ফাংশনগুলি ব্যবহৃত হয়।
RELATED ফাংশন
RELATED ফাংশনটি ব্যবহৃত হয় যখন আপনি এক টেবিলের কলাম থেকে অন্য টেবিলের কলামকে অ্যাক্সেস করতে চান, যদি একটি one-to-many সম্পর্ক থাকে।
Syntax:
RELATED(<column>)
- : আপনি যে কলামটি অ্যাক্সেস করতে চান, তা সম্পর্কিত টেবিলের একটি কলাম হতে হবে।
ব্যবহার:
ধরা যাক, আপনার কাছে দুটি টেবিল রয়েছে - Sales এবং Products। আপনি Sales টেবিলের মধ্যে ProductID কলামের সাথে সম্পর্কিত ProductName দেখতে চান:
Product Name = RELATED(Products[ProductName])
এটি Sales টেবিলের প্রতিটি সারির জন্য Products টেবিলের ProductName কলামের মান ফিরিয়ে দেবে।
RELATEDTABLE ফাংশন
RELATEDTABLE ফাংশনটি ব্যবহার করা হয় যখন আপনি একটি টেবিলের সম্পর্কিত অন্য একটি টেবিলের সকল সারি ফেরত পেতে চান। এটি সাধারণত many-to-one সম্পর্কের জন্য ব্যবহৃত হয়।
Syntax:
RELATEDTABLE(<table>)
ব্যবহার:
ধরা যাক, আপনি Products টেবিলের জন্য Sales টেবিলের সমস্ত রেকর্ড দেখতে চান:
Total Sales = SUMX(RELATEDTABLE(Sales), Sales[Amount])
এটি Products টেবিলের প্রতিটি পণ্যের জন্য Sales টেবিলের সম্পর্কিত সকল বিক্রয় পরিমাণ যোগ করবে।
USERELATIONSHIP ফাংশন
USERELATIONSHIP ফাংশনটি ব্যবহার করা হয় যখন আপনি inactive relationships সক্রিয় করতে চান। এটি বিশেষভাবে ব্যবহৃত হয় যখন দুটি সম্পর্ক তৈরি থাকে এবং আপনি চাচ্ছেন যে একটি inactive relationship চালু করা হোক।
Syntax:
USERELATIONSHIP(<column1>, <column2>)
ব্যবহার:
ধরা যাক, আপনি Sales টেবিলের OrderDate এবং ShipDate সম্পর্কিত দুটি কলামের জন্য inactive relationship সক্রিয় করতে চান:
Total Sales by Ship Date =
CALCULATE(SUM(Sales[Amount]),
USERELATIONSHIP(Sales[ShipDate], Date[Date])
)
এটি Sales টেবিলের ShipDate কলামের সাথে Date টেবিলের Date কলামকে inactive relationship দিয়ে যুক্ত করবে এবং তার উপর ভিত্তি করে Total Sales বের করবে।
৪. Table Joins Using Relationships in Power BI
Power BI তে relationships ব্যবহার করে table join করা বেশ সহজ। Relationships ব্যবহারের মাধ্যমে একাধিক টেবিলের ডেটাকে একত্রিত করা যায়, যা DAX Queries এর মাধ্যমে কাস্টম ক্যালকুলেশন এবং বিশ্লেষণ তৈরি করতে সাহায্য করে।
Example: Joining Sales and Products Table
ধরা যাক, আপনার কাছে Sales এবং Products টেবিল রয়েছে, যেখানে Sales টেবিলের ProductID কলাম Products টেবিলের ProductID কলামের সাথে সম্পর্কিত। আপনি যদি Sales টেবিলের জন্য Product Name দেখতে চান, তবে আপনি এই DAX কোডটি ব্যবহার করতে পারেন:
Product Sales Summary = SUMMARIZE(
Sales,
Sales[ProductID],
"Total Sales", SUM(Sales[Amount]),
"Product Name", RELATED(Products[ProductName])
)
এটি Sales টেবিলের প্রতিটি ProductID অনুযায়ী Total Sales এবং Product Name একত্রিত করে একটি নতুন টেবিল তৈরি করবে।
৫. Best Practices for Using Relationships for Table Joins
- Use Clear and Consistent Naming Conventions:
- আপনার টেবিলের মধ্যে সম্পর্ক তৈরি করার সময়, সঠিক এবং সুস্পষ্ট নাম ব্যবহার করুন যাতে সম্পর্কগুলি সহজে চিহ্নিত করা যায়।
- Avoid Circular Relationships:
- Circular Relationships বা চক্রাকার সম্পর্ক এড়ানো উচিত, কারণ এটি filter context এর মধ্যে সমস্যা সৃষ্টি করতে পারে।
- Ensure One-to-Many Relationships:
- সম্পর্কগুলির মধ্যে One-to-Many সম্পর্ক নিশ্চিত করুন, যাতে সম্পর্কগুলির কার্যকারিতা এবং ডেটা বিশ্লেষণ সঠিকভাবে কাজ করে।
- Limit the Use of Bi-directional Relationships:
- Bi-directional relationships এর ব্যবহারে সাবধানতা অবলম্বন করুন, কারণ এটি cross-filtering এর উপর অপ্রত্যাশিত প্রভাব ফেলতে পারে।
- Check for Active and Inactive Relationships:
- যদি আপনার টেবিলগুলির মধ্যে multiple relationships থাকে, তবে নিশ্চিত করুন যে আপনি সঠিক active relationship ব্যবহার করছেন এবং inactive relationships সঠিকভাবে পরিচালিত হচ্ছে।
সারাংশ
Relationships এবং table joins ডেটা বিশ্লেষণের জন্য অত্যন্ত গুরুত্বপূর্ণ, বিশেষ করে Power BI এবং Excel-এ। DAX-এ RELATED, RELATEDTABLE, এবং USERELATIONSHIP ফাংশন ব্যবহার করে আপনি সম্পর্কিত টেবিলগুলির মধ্যে ডেটা একত্রিত করতে পারেন। এটি Power BI এবং SSAS-এ ডেটা মডেল তৈরি করার সময় সঠিকভাবে ডেটাকে একত্রিত এবং বিশ্লেষণ করতে সহায়ক। Best practices অনুসরণ করে, আপনি table join এবং relationships ব্যবহারে আরও দক্ষ এবং কার্যকরী ফলাফল পেতে পারেন।
Read more